import org.junit.Test;
/*
* String类学习：
* 1.String类是Java中用于处理字符串的类，它提供了一系列的操作字符串的方法。
* 2.String类提供了很多方法，如：
*   - char charAt(int index)：返回指定索引处的字符。
*   - int length()：返回字符串的长度。
*   - String substring(int beginIndex, int endIndex)：返回指定索引范围的子字符串。
*   - String replace(char oldChar, char newChar)：替换字符串中的指定字符。
*   - String toLowerCase()：将字符串转换为小写。
*   - String toUpperCase()：将字符串转换为大写。
*   - String trim()：去除字符串两端的空白字符。
*   - boolean equals(Object anObject)：判断两个字符串是否相等。
*   - int compareTo(String anotherString)：比较两个字符串的大小。
* 3.String类提供了一些构造方法，如：
*   - String(char[] value)：根据字符数组构造字符串。
*   - String(byte[] bytes)：根据字节数组构造字符串。
*   - String(byte[] bytes, int offset, int length)：根据字节数组和偏移量和长度构造字符串。
*   - String(StringBuffer buffer)：根据StringBuffer构造字符串。`
* 4.String类提供了一些静态方法，如：
*   - String valueOf(boolean b)：将布尔值转换为字符串。
*   - String valueOf(char c)：将字符转换为字符串。
*   - String valueOf(char[] data)：将字符数组转换为字符串。
*   - String valueOf(char[] data, int offset, int count)：将字符数组的指定范围转换为字符串。
*   - String valueOf(double d)：将双精度浮点数转换为字符串。
*   - String valueOf(float f)：将单精度浮点数转换为字符串。
*   - String valueOf(int i)：将整数转换为字符串。
*   - String valueOf(long l)：将长整数转换为字符串。
*   - String valueOf(Object obj)：将对象转换为字符串。
* */


public class StringLearn {
    @Test
    public void StringLearn1() {
                // 2. String类的方法示例
                String str = "Hello, World!";

                // char charAt(int index)
                char ch = str.charAt(1); // 'e'
                System.out.println("charAt(1): " + ch);

                // int length()
                int length = str.length(); // 13
                System.out.println("length(): " + length);

                // String substring(int beginIndex, int endIndex)
                String substring = str.substring(0, 5); // "Hello"
                System.out.println("substring(0, 5): " + substring);

                // String replace(char oldChar, char newChar)
                String replaced = str.replace('o', '0'); // "Hell0, W0rld!"
                System.out.println("replace('o', '0'): " + replaced);

                // String toLowerCase()
                String lowerCase = str.toLowerCase(); // "hello, world!"
                System.out.println("toLowerCase(): " + lowerCase);

                // String toUpperCase()
                String upperCase = str.toUpperCase(); // "HELLO, WORLD!"
                System.out.println("toUpperCase(): " + upperCase);

                // String trim()
                String strWithSpaces = "  Hello, World!  ";
                String trimmed = strWithSpaces.trim(); // "Hello, World!"
                System.out.println("trim(): " + trimmed);

                // boolean equals(Object anObject)
                boolean equals = str.equals("Hello, World!"); // true
                System.out.println("equals(\"Hello, World!\"): " + equals);

                // int compareTo(String anotherString)
                int compareTo = str.compareTo("Hello, World!"); // 0 (strings are equal)
                System.out.println("compareTo(\"Hello, World!\"): " + compareTo);

                // 3. String类的构造方法示例
                // String(char[] value)
                char[] charArray = {'H', 'e', 'l', 'l', 'o'};
                String strFromCharArray = new String(charArray); // "Hello"
                System.out.println("String(charArray): " + strFromCharArray);

                // String(byte[] bytes)
                byte[] byteArray = {72, 101, 108, 108, 111};
                String strFromByteArray = new String(byteArray); // "Hello"
                System.out.println("String(byteArray): " + strFromByteArray);

                // String(byte[] bytes, int offset, int length)
                String strFromPartialByteArray = new String(byteArray, 1, 3); // "ell"
                System.out.println("String(byteArray, 1, 3): " + strFromPartialByteArray);

                // String(StringBuffer buffer)
                StringBuffer buffer = new StringBuffer("Hello");
                String strFromBuffer = new String(buffer); // "Hello"
                System.out.println("String(buffer): " + strFromBuffer);

                // 4. String类的静态方法示例
                // String valueOf(boolean b)
                String boolStr = String.valueOf(true); // "true"
                System.out.println("String.valueOf(true): " + boolStr);

                // String valueOf(char c)
                String charStr = String.valueOf('X'); // "X"
                System.out.println("String.valueOf('X'): " + charStr);

                // String valueOf(char[] data)
                String arrStr = String.valueOf(charArray); // "Hello"
                System.out.println("String.valueOf(charArray): " + arrStr);

                // String valueOf(char[] data, int offset, int count)
                String partialArrStr = String.valueOf(charArray, 1, 3); // "ell"
                System.out.println("String.valueOf(charArray, 1, 3): " + partialArrStr);

                // String valueOf(double d)
                String doubleStr = String.valueOf(3.14159); // "3.14159"
                System.out.println("String.valueOf(3.14159): " + doubleStr);

                // String valueOf(float f)
                String floatStr = String.valueOf(2.718f); // "2.718"
                System.out.println("String.valueOf(2.718f): " + floatStr);

                // String valueOf(int i)
                String intStr = String.valueOf(42); // "42"
                System.out.println("String.valueOf(42): " + intStr);

                // String valueOf(long l)
                String longStr = String.valueOf(123456789L); // "123456789"
                System.out.println("String.valueOf(123456789L): " + longStr);

                // String valueOf(Object obj)
                Integer obj=123;
                String objStr = String.valueOf(obj); // "123"
                System.out.println("String.valueOf(obj): " + objStr);
            }

    }

